﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using TES.EnteRegulador;
using System.Collections.ObjectModel;

namespace TES.WEB.EnteRegulador.Controles
{
    public partial class ControlDetallesEnlace : System.Web.UI.UserControl
    {

        private const string _ascending = "ASC";
        private const string _descending = "DESC";
        protected void Page_Load(object sender, EventArgs e)
        {

        }


        /// <summary>
        /// DataSource de BD
        /// </summary>
        public ReadOnlyCollection<TES.EnteRegulador.MergeEnlace> DataSource
        {
            set { Session["DataSourceDetallesEnlace"] = value; }
            get { return (Session["DataSourceDetallesEnlace"] != null) ? (ReadOnlyCollection<TES.EnteRegulador.MergeEnlace>)(Session["DataSourceDetallesEnlace"]) : null; }
        }





        private List<MergeEnlaceVisual> DataSet
        {
            get { return ObtenerDataSet(); }
        }


        /// <summary>
        /// Obtiene el data set
        /// </summary>
        /// <returns></returns>
        private List<MergeEnlaceVisual> ObtenerDataSet()
        {
            if (DataSource != null)
            {
                List<MergeEnlaceVisual> listaMerges = new List<MergeEnlaceVisual>();
                ReadOnlyCollection<TES.EnteRegulador.MergeEnlace> listadoEnlaces = DataSource;


                foreach (MergeEnlace merge in listadoEnlaces)
                {
                    listaMerges.Add(new MergeEnlaceVisual(merge, false));
                }




                //string expresion = (Session["SortExpression"] != null) ? Session["SortExpression"].ToString() : string.Empty;
                //string direccion = (Session["SortDirecction"] != null) ? Session["SortDirecction"].ToString() : string.Empty;

                //listaMerges = SortGridView(expresion, direccion, listaMerges);



                //string filtrarRed = (Session["FiltrarRed"] != null) ? Session["FiltrarRed"].ToString() : string.Empty;
                //string filtrarRegional = (Session["FiltrarRegional"] != null) ? Session["FiltrarRegional"].ToString() : string.Empty;
                //string filtrarEnlace = (Session["FiltrarEnlace"] != null) ? Session["FiltrarEnlace"].ToString() : string.Empty;
                //string filtrarEstadoEnlace = (Session["FiltrarEstadoEnlace"] != null) ? Session["FiltrarEstadoEnlace"].ToString() : string.Empty;
                //string filtrarEstadoLegalizacion = (Session["FiltrarEstadoLegalizacion"] != null) ? Session["FiltrarEstadoLegalizacion"].ToString() : string.Empty;
                //string filtrarCompleto = (Session["FiltrarCompleto"] != null) ? Session["FiltrarCompleto"].ToString() : string.Empty;
                //string filtarImplementado = (Session["FiltrarImplementado"] != null) ? Session["FiltrarImplementado"].ToString() : string.Empty;

                //listaMerges = FiltrarLista(filtrarRed, filtrarRegional, filtrarEnlace, filtrarEstadoEnlace, filtrarEstadoLegalizacion, filtrarCompleto, filtarImplementado, listaMerges);
                return listaMerges;
            }
            else
            {
                return null;
            }
        }



        /// <summary>
        /// Override del dataBind del control
        /// </summary>
        public override void DataBind()
        {

            GridViewControlDetallesEnlace.DataSource = DataSet;

            GridViewControlDetallesEnlace.DataBind();
            if (GridViewControlDetallesEnlace.SelectedIndex == -1)
            {
                GridViewControlDetallesEnlace.SelectedIndex = 0;
            }
            List<MergeEnlaceVisual> dataSourceFormView = new List<MergeEnlaceVisual>();
            dataSourceFormView.Add(((List<MergeEnlaceVisual>)(GridViewControlDetallesEnlace.DataSource))[GridViewControlDetallesEnlace.SelectedIndex]);

            FormView1.DataSource = dataSourceFormView;
            FormView1.DataBind();
            PanelCompletio.Update();

            //GridViewControlMergeLegalizaciones.DataSource = DataSet;
            // GridViewControlMergeLegalizaciones.DataBind();
            // LabelNumeroPaginasVistas.Text = "Página " + (GridViewControlMergeLegalizaciones.PageIndex + 1).ToString() + " de " + GridViewControlMergeLegalizaciones.PageCount.ToString();
        }






        protected string Cambio(bool completo)
        {
            if (completo == true)
                return "Si";
            else
                return "No";
        }

        public SortDirection GridViewSortDirection
        {
            get
            {
                if (ViewState["DirectionDetalles"] == null)
                    ViewState["DirectionDetalles"] = SortDirection.Ascending;

                return (SortDirection)ViewState["DirectionDetalles"];
            }
            set { ViewState["DirectionDetalles"] = value; }
        }

        protected void OnSortDetalles(object sender, GridViewSortEventArgs e)
        {
            string sortExpression = e.SortExpression;

            if (GridViewSortDirection == SortDirection.Ascending)
            {
                GridViewSortDirection = SortDirection.Descending;


                //    SortGridView(sortExpression, _descending);
                Session["DirectionDetalles"] = _descending;
            }
            else
            {
                GridViewSortDirection = SortDirection.Ascending;
                //SortGridView(sortExpression, _ascending);
                Session["DirectionDetalles"] = _ascending;
            }
            Session["SortExpressionDetalles"] = sortExpression;
            //   ObjectDataSource1.DataBind();
            GridViewControlDetallesEnlace.DataBind();
            e.Cancel = true;


        }

        //protected void btnFiltrarDeatlles_Click(object sender, EventArgs e)
        //{
        //    if (_checkBoxFiltrarDetallesPorNumeroRed.Checked == true)
        //    {
        //        Session["FiltrarDetallesRed"] = txtFiltrarDetallesRed.Text.ToString();
        //    }
        //    else
        //    {
        //        Session["FiltrarDetallesRed"] = null;
        //    }

        //    if (_checkBoxFiltrarDetallesPorRegional.Checked == true)
        //    {
        //        Session["FiltrarDetallesRegional"] = txtFiltrarDetallesRegional.Text.ToString();
        //    }
        //    else
        //    {
        //        Session["FiltrarDetallesRegional"] = string.Empty;
        //    }
        //    if (_checkBoxFiltrarDetallesPorEnlace.Checked == true)
        //    {
        //        Session["FiltrarDetallesEnlace"] = txtFiltrarDetallesPorEnlace.Text.ToString();
        //    }
        //    else
        //    {
        //        Session["FiltrarDetallesEnlace"] = string.Empty;
        //    }

        //    if (_checkBoxFiltrarDetallesPorEstadoEnlace.Checked == true)
        //    {
        //        Session["FiltrarDetallesEstadoEnlace"] = txtFiltrarDetallesPorEstadoEnlace.Text.ToString();
        //    }
        //    else
        //    {
        //        Session["FiltrarDetallesEstadoEnlace"] = string.Empty;
        //    }

        //    if (_checkBoxFiltrarDetallesPorEstadoLegalizacion.Checked == true)
        //    {
        //        Session["FiltrarDetallesEstadoLeg"] = txtFiltrarDetallesPorEstadoLegalizacion.Text.ToString();
        //    }
        //    else
        //    {
        //        Session["FiltrarDetallesEstadoLeg"] = string.Empty;
        //    }
        //    if (_checkBoxFiltrarDetallesPorCompleto.Checked == true)
        //    {
        //        Session["FiltrarDetallesCompleto"] = dropListFiltrarDetallesPorCompleto.SelectedItem.ToString();
        //    }
        //    else
        //    {
        //        Session["FiltrarDetallesCompleto"] = string.Empty;
        //    }          


        //    GridViewControlDetallesEnlace.DataBind();
        //    //Session["FiltrarRed"] = null;

        //}

        protected void GridViewControlDetallesEnlace_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.DataBind();
        }




    }
}